---
id: sparetime
title: 12. SpareTime 静态类
sidebar_label: 12. SpareTime 静态类
---

`SpareTime` 静态类提供了一些方法方便初始化和管理任务

## 12.1 初始化任务

```cs
// 开启间隔任务
SpareTime.Do(interval, [options]);

// 开启 Cron 表达式任务
SpareTime.Do(expression, [options]);

// 只执行一次任务
SpareTime.DoOnce(interval, [options]);

// 实现自定义任务
SpareTime.Do(()=>{
    return DateTime.Now.AddMinutes(10);
},[options]);
```

## 12.2 实现后台执行

```cs
// 实现后台执行
SpareTime.DoIt(()=>{});
```

## 12.3 开始一个任务

```cs
SpareTime.Start("任务标识");
```

## 12.4 暂停一个任务

```cs
SpareTime.Stop("任务标识");
// 还可以标记一个任务执行失败
SpareTime.Stop("任务标识", true);
```

## 12.5 取消一个任务

```cs
SpareTime.Cancel("任务名称");
```

## 12.6 销毁所有任务

```cs
SpareTime.Dispose();
```

## 12.7 获取所有任务

```cs
var workers = SpareTime.GetWorkers();
```

## 12.8 获取当个任务

```cs
var worker = SpareTime.GetWorker("workerName");
```

## 12.9 解析 `Cron` 表达式

```cs
var nextTime = SpareTime.GetCronNextOccurrence("* * * * *");
```

## 12.10 `BackgroundService` 间隔定时任务

```cs
// 间隔执行任务
await SpareTime.DoAsync(1000, () =>
{
    _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}, stoppingToken);
```

## 12.11 `BackgroundService` `Cron` 定时任务

```cs
 // 执行 Cron 表达式任务
await SpareTime.DoAsync("*/5 * * * * *", () =>
{
    _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}, stoppingToken, CronFormat.IncludeSeconds);
```
